Field of the Disclosure
The present disclosure relates generally to communication systems and, more particularly, to encoding and decoding of pictures in a communication system.
Description of the Related Art
Video or multimedia servers generate data representative of pictures in a video stream, e.g., a video stream that has been requested by a user. An encoder encodes the data for each picture to form a bitstream that is transmitted over a network to a decoder that decodes the bitstream and provides the decoded information to a video or multimedia application for display to the user. The encoded packets can be corrupted during transmission so that one or more of the bits in the bitstream received at the decoder differs from the corresponding one or more bits in the bitstream transmitted by the encoder. Network layer entities can detect errors in received packets. Any corrupted packets are typically dropped and consequently they are not decoded by the decoder.
Conventional encoders implement video compression algorithms that use information from more than one picture to encode some types of received pictures. For example, an intra-coded picture (such as an I-frame) is a fully specified picture that is encoded and decoded without reference to any other picture. A predicted picture (such as a P-frame) is encoded and decoded with reference to one or more previous pictures and therefore typically requires fewer bits to encode than an intra-coded picture. A bi-directional predicted picture (such as a B-frame) is encoded and decoded with reference to one or more previous pictures and/or one or more subsequent pictures. The bi-directional predicted picture typically requires fewer bits to encode than an intra-coded picture or a predicted picture. Encoding and decoding pictures based on previous or subsequent pictures reduces the amount of information transmitted between the encoder and the decoder, as well as reducing the workload at the decoder. However, dropped packets break the chain of pictures that determines the state of the decoder, which may cause significant errors in subsequently decoded pictures.
Conventional decoders typically respond to dropped packets in one of two ways: (1) “freezing” the video at the last successfully decoded frame until a new intra-coded picture is received or (2) continuing to decode subsequent pictures based on the last successfully decoded picture. Both approaches have significant drawbacks. Freezing the video may unnecessarily degrade the user experience for minor corruption of the picture. For example, a packet may be dropped if a single bit in a frame is flipped from 0 to 1, which may cause the video stream to freeze until the next intra-coded picture is received. However, continuing to decode pictures received after the dropped packet may cause significant errors to propagate to (and in some cases be amplified in) pictures that are encoded based on previous or subsequent pictures.